package com.nutrition.health.service;

import com.nutrition.health.model.UserHealthProfile;

import java.util.Map;
import java.util.Optional;

public interface UserHealthProfileService {
    
    Optional<UserHealthProfile> getProfileByUserId(Long userId);
    
    UserHealthProfile createProfile(Long userId, UserHealthProfile profile);
    
    UserHealthProfile updateProfile(Long userId, UserHealthProfile profileDetails);
    
    void deleteProfile(Long userId);
    
    /**
     * 计算用户的基础代谢率(BMR)
     * @param userId 用户ID
     * @return 基础代谢率（卡路里/天）
     */
    double calculateBMR(Long userId);
    
    /**
     * 计算用户的每日卡路里需求
     * @param userId 用户ID
     * @return 每日卡路里需求
     */
    double calculateDailyCalorieNeeds(Long userId);
    
    /**
     * 计算用户的BMI指数
     * @param userId 用户ID
     * @return BMI值
     */
    double calculateBMI(Long userId);
    
    /**
     * 获取用户的BMI分类
     * @param userId 用户ID
     * @return BMI分类（如"正常"、"超重"等）
     */
    String getBMICategory(Long userId);
    
    /**
     * 生成用户的每日营养素需求
     * @param userId 用户ID
     * @return 营养素需求映射（键为营养素名称，值为推荐摄入量）
     */
    Map<String, Double> generateNutrientRequirements(Long userId);
    
    /**
     * 生成个性化健康建议
     * @param userId 用户ID
     * @return 健康建议列表
     */
    Map<String, String> generateHealthRecommendations(Long userId);
    
    /**
     * 根据用户健康状况和目标生成饮食计划
     * @param userId 用户ID
     * @return 饮食计划（包含每日推荐食品和营养摄入）
     */
    Map<String, Object> generateDietPlan(Long userId);
}